Particular embodiments generally relate to a debugging application.
When an error occurs in a software application, a support user can analyze the problem by debugging the source code. A debugger is used by the support user to view the source code of the application and execute it line by line. The debugger helps in viewing parameters of the executed entities in the application, such as class methods or function modules. The debugger also allows the support user to set watch points and break points to halt the application execution at defined steps, which may help the support user in determining what the problem is in the application. This layer that is seen by the support user is considered the coding layer. It is termed the coding layer because the debugger operates on the source code.
A business layer is the layer of the software application that is visible to an end user using the application. The end user may interact with the business layer to have transactions performed. The software application may model business processes using business objects (BOs) with dedicated attributes and behavior. Interaction between business objects model real-life behavior. Transactions may then be performed that operate on a workflow represented by the business objects. The workflow defines different execution orders that may be taken in performing transactions.
The business layer and coding layer are sufficient as long as the business objects and their interactions are modeled specifically for just one business use case. That is, the corresponding code reads like an exact description of the underlying workflows of the business use case except that instead of the workflow, the programming syntax (i.e., the source code) is followed. Accordingly, program execution needs to always follow the same path and pattern. Debugging of this code may be straightforward and can be used according to the above-described debugger.
However, generic software applications used in many cases have different use cases that have an undefined execution order of their business objects. The execution order is determined on an individual basis, i.e., for each transaction and cannot be determined at design time. The determination of the needed execution steps depends on the actions taken by the user. Accordingly, using a debugger that allows the support user to view source code executed line by line may not be efficient when the execution of the application is using different business objects, which means different parts of the source code are being executed. This makes it very hard for a support user to follow the execution in the debugger. It also makes determining which business object is currently being executed by the application very time-consuming and also, in the worst case, wrong assumptions of where the application currently is active may occur. This may lead to wrong interpretations and wrong corrections in debugging the application.